package com.mohunhun.services;

import com.mohunhun.model.Message;
import io.swagger.v3.oas.annotations.tags.Tag;
import org.apache.ibatis.annotations.Param;
import org.springframework.transaction.annotation.Transactional;

import java.util.List;

public interface IMessageService {




    /**
     * 创建一条新消息
     * @param message 消息对象
     */
    void create(Message message);



    /**
     * 根据消息ID查询消息详情
     * @param id 消息ID
     * @return 消息对象
     */
    Message selectById(Long id);

    /**
     * 查询未读消息数量
     * @param receiveUserId 接收用户ID
     */
    Integer selectUnreadCount( Long receiveUserId);


    /**
     * 根据接收用户ID查询消息列表
     * @param receiveUserId 接收用户ID
     * @return 消息列表
     */
    List<Message> selectByReceiveUserId(@Param("receiveUserId") Long receiveUserId);



    /**
     * 根据消息ID更新消息状态
     * @param id 消息ID
     * @param state 消息状态
     */
    void updateStateById(Long id,Byte state);



    /**
     * 回复消息
     * @param repliedId 被回复的消息ID
     * @param message 回复的消息对象
     */
    @Transactional
    void reply(Long repliedId, Message message);



}
